package com.ccubee.data.transfer.types;

import com.ccubee.data.transfer.model.TransferRequest;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;
import java.util.function.Function;

/**
 * 传输分页模式
 *
 * @Author ycf
 * @Date 2022/11/13 22:51
 * @Version 1.0
 */
@AllArgsConstructor
@Getter
public enum TransferMod {
    /**
     * 模式
     */
    PAGE("分页模式", i -> "LIMIT ?,?"),
    ID("ID模式", i -> String.format("where %s > ? ORDER BY %s ASC LIMIT ?", i.getColumn(), Objects.requireNonNull(i.getColumn(), "ID模式字段不能为空")));
    /**
     * 名称
     */
    private final String name;
    /**
     * sql片段
     */
    private final Function<TransferRequest, String> sql;

    /**
     * 获取sql片段
     *
     * @param t 参数
     * @return 结果
     */
    public String sql(TransferRequest t) {
        return getSql().apply(t);
    }

}
